package condominio.negocio;
import java.util.Collection;

import condominio.excepcion.DAOExcepcion;
import condominio.excepcion.LoginExcepcion;
import condominio.dao.*;
//import condominio.excepcion.*;
import condominio.modelo.*;

public class condominioNegocio {
	
	public Persona login(String Dni, String clave) throws DAOExcepcion,	LoginExcepcion {
	PersonaDAO dao = new PersonaDAO();
	return dao.login(Dni, clave);
	}

	
	public void registrarVivienda(Vivienda vi) throws DAOExcepcion {
		ViviendaDAO dao = new ViviendaDAO();
		dao.insertar(vi);
	}
	
	
	
	public void BajaResidente(String idPersona)  throws DAOExcepcion {
		
		PersonaDAO dao = new PersonaDAO();
		try {
			dao.ActualizaEstado(idPersona);
		} catch (DAOExcepcion e) {
			throw e;
		}		

	}
	
	public void insertarPersona(Persona pe) throws DAOExcepcion {
		PersonaDAO dao = new PersonaDAO();
		dao.insertar(pe);
	}
	

public Persona obtenerPersona(int id)  throws DAOExcepcion {
	
	PersonaDAO dao = new PersonaDAO();
	Persona pe = new Persona();
	try {
		pe= dao.ObtenerPersona(id);
	} catch (DAOExcepcion e) {
		throw e;
	}		
	return pe;
}

public boolean dniPersona(String Dni)  throws DAOExcepcion {
	PersonaDAO dao = new PersonaDAO();
	
	try {
		if (dao.dniPersona(Dni).getDni().equals(Dni))
		{return true;}
		else
		{return false;}
	} catch (DAOExcepcion e) {
		throw e;
	}		
	
}

public Vivienda obtenerVivienda(int id)  throws DAOExcepcion {
	
	ViviendaDAO dao = new ViviendaDAO();
	Vivienda vi = new Vivienda();
	try {
		vi= dao.ObtenerVivienda(id);
	} catch (DAOExcepcion e) {
		throw e;
	}		
	return vi;
}
public Collection<Persona> listadoUsuario() throws DAOExcepcion 
{
	
		PersonaDAO objDAOUsuario = new PersonaDAO();
		return objDAOUsuario.listarUsuario();
}

//------------------------ adicionados por Tirso:
//-------------------------------------------------------------------------------------------
//	public void registrarNuevaCuota(String pPeriodo, int pVivienda,	double pImporte, String pFechaVcto, String pEstado, String PFechaPago) throws DAOExcepcion {
	public int registrarNuevaCuota(Cuota pObjCuota) throws DAOExcepcion {
		// pResultado : 0-ok se registro  , 1    no se pudo insertar, error desconoc , 2    no se pudo insertar, ya existe la clave 
		int pResultado = 1;
		String strPeriodo = pObjCuota.getStrPeriodo();
		int intVivienda = pObjCuota.getIntVivienda();
		int intAux;
//---- validacion que exista el periodo enviado
		
		
//---- validacion que no se ingrese duplicado cuota en mismo periodo y vivienda
		CuotaDAO daoCuotaQry = new CuotaDAO();
		try {
			Cuota objCuotaQry = daoCuotaQry.obtenerCuotaDAO(strPeriodo, intVivienda);
			intAux = objCuotaQry.getIntVivienda();
			if (intVivienda == intAux) {
				System.out.println("Cuota ya registrada a esta Vivienda en el Periodo indicado");
				pResultado = 2;
			}
		} catch (DAOExcepcion e) {
			throw e;
		}
		
		// --------------
		if (pResultado != 2) {
			String strEstado = "E"; // fijo estado inicial de la cuota es E-Emitido
			pObjCuota.setChrEstadoCuota(strEstado.charAt(0));
			pObjCuota.setStrFechaPago(null);
			CuotaDAO dao = new CuotaDAO();
			try {
				dao.insertarRegistroCuota(pObjCuota);
				pResultado = 0;
			} catch (DAOExcepcion e) {
				throw e;
			}
			if (pResultado == 0)
				System.out.println("registrarNuevaCuota - Registro exitoso de Cuota - Periodo " + strPeriodo + " - Vivienda " + intVivienda);
		}
		return pResultado;
	}

	public Collection<Cuota> listadoCuotas() throws DAOExcepcion {
	// nuevo para version2
			CuotaDAO objDAOCuota = new CuotaDAO();
			return objDAOCuota.listarCuotas();
	}

	public Cuota obtenerCuota(String pStrPeriodo, int pIntVivienda) throws DAOExcepcion {
//nuevo para version 2
		CuotaDAO objDAOCuota = new CuotaDAO();
		return objDAOCuota.obtenerCuotaDAO(pStrPeriodo, pIntVivienda);
	}
	
//-------------------------------------------------------------------------------------------
	public void registrarNuevoGaraje(int pIntResultado, Garaje pObjGaraje) throws DAOExcepcion {
	// nuevo para version2    ok pruebas !
		GarajeDAO objDAOGaraje = new GarajeDAO();
		try {
			objDAOGaraje.insertarRegGaraje(pObjGaraje);
			pIntResultado = 0; // insercion OK !
		} catch (DAOExcepcion e) {
			throw e;
		}
	}

//-------------------------------------------------------------------------------------------
	public Collection<Garaje> listadoGarajes() throws DAOExcepcion {
	// modif para version2    ok pruebas !
		GarajeDAO objDAOGaraje = new GarajeDAO();
		return objDAOGaraje.listarGarajes();
	}
	
//-------------------------------------------------------------------------------------------
	public void registrarNuevaQueja(Queja objetoQueja) throws DAOExcepcion {
		// v1
		String strOK = "";
		QuejaDAO dao = new QuejaDAO();
		try {
			dao.insertarRegQueja(objetoQueja);
			strOK = "OK";
		} catch (DAOExcepcion e) {
			throw e;
		}
		if (strOK.equals("OK"))
			System.out.println("Se ha registrado correctamente una nueva Queja");
	}

//-------------------------------------------------------------------------------------------
	public Collection<Queja> listadoQuejasResidente(String pCodResidente) throws DAOExcepcion {
//nuevo para version2
		QuejaDAO objDAOQueja = new QuejaDAO();
		
		return objDAOQueja.buscarQuejasPorResidente(pCodResidente);
	}

}
